package map.tile.server.service.impl;

import map.tile.server.bo.MongodbTile;
import map.tile.server.bo.Tile;
import map.tile.server.dao.BaseTileDao;
import map.tile.server.dto.TileIndex;
import map.tile.server.service.BaseTileService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class BaseTileServiceImpl implements BaseTileService {

    @Autowired
    BaseTileDao baseTileDao;
    @Autowired
    MongodbServiceImpl mongodbService;

    @Override
    public byte[] getTile(TileIndex tileIndex) throws Exception {
        if(StringUtils.isBlank(tileIndex.getCollectionName())){
            throw new Exception("CollectionName不能为空");
        }
        MongodbTile mongodbTile1=mongodbService.getTile(tileIndex);
        if(mongodbTile1!=null){
            return mongodbTile1.getTile_data();
        }else {
            throw new Exception("当前范围无切片");
        }
//        //Todo 判断表名是否存在
//        Tile tile= baseTileDao.getTileByIndex(tileIndex);
//        if(null==tile){
//            throw new Exception("当前范围无切片");
//        }
//        tileIndex.setCollectionName("tiles_"+tileIndex.getCollectionName());
//        mongodbService.createCollection(tileIndex.getCollectionName());
//        MongodbTile mongodbTile=new MongodbTile();
//        mongodbTile.setX(tileIndex.getX());
//        mongodbTile.setY(tileIndex.getY());
//        mongodbTile.setZ(tileIndex.getZ());
//        mongodbTile.setTile(tile.getTile());
//        mongodbService.saveTile(mongodbTile,tileIndex.getCollectionName());

//        return tile.getTile();
    }

//    /**
//     * 根据经纬度范围切片
//     *
//     * @param boundingBox
//     * @param tableName
//     * @param collectionName
//     * @param minLevel
//     * @param maxLevel
//     */
//    @Override
//    public void tileByBound(BoundingBox boundingBox, String tableName, String collectionName, Integer minLevel, Integer maxLevel) {
//        mongodbService.createCollection(collectionName);
//        CoordinateXY coordinateLeftDown=Wgs84ToMector(boundingBox.getLonMin(),boundingBox.getLatMin());
//        CoordinateXY coordinateRightUp=Wgs84ToMector(boundingBox.getLonMax(),boundingBox.getLatMax());
//        for (int i = minLevel; i <=maxLevel ; i++) {
//            List<TileIndex> tileIndices=GetTMSCoord(coordinateLeftDown.getX(),coordinateLeftDown.getY(),
//                    coordinateRightUp.getX(),coordinateRightUp.getY(),
//                    i,0);
//           for(TileIndex index:tileIndices){
//               index.setCollectionName(tableName);
//               Tile tile= baseTileDao.getTileByIndex(index);
//               MongodbTile mongodbTile=new MongodbTile();
////               mongodbTile.setX(index.getX());
////               mongodbTile.setY(index.getY());
////               mongodbTile.setZ(index.getZ());
////               mongodbTile.setTile(tile.getTile());
//               mongodbService.saveTile(mongodbTile,collectionName);
//           }
//        }
//
//    }
}
